//
//  contain_class.hpp
//  learnC++
//
//  Created by liuzhibing on 2018/6/11.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef contain_class_hpp
#define contain_class_hpp

#include <stdio.h>
#include <iostream>
#include <cassert>

class IntArray {
private:
    int m_length;
    int *m_data;
    
public:
    IntArray();
    
    explicit IntArray(int length);
    
    //当C ++ 11编译器看到初始化器列表时，它会自动将其转换为std :: initializer_list类型的对象。因此，如果我们创建一个采用std :: initializer_list参数的构造函数，我们可以使用初始化程序列表作为输入来创建对象。
    IntArray(const std::initializer_list<int> &list);
    
    ~IntArray();
    
    void erase();
    
    int &operator[](int index);
    
    void reallocate(int newLength);
    //保存原有元素
    void resize(int newLength);
    
    void insertBefore(int value,int index);
    
    void remove(int index);
    
    void insertAtBeginning(int value);
    
    void insertAtEnd(int value);
    
    int getLength();
    
    
    //======>>>>>>.分割线
    //赋值、复制
    IntArray(const IntArray &arr) = delete;
    
    IntArray &operator=(const std::initializer_list<int> &list);
    
};


#endif /* contain_class_hpp */
